﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Happy.Query
{
    /// <summary>
    ///查询源接口。
    /// </summary>
    public interface IQuerySource<T>
    {
        /// <summary>
        /// 获取分页结果，面向支持分页的表格。
        /// </summary>
        PageResult<T> Page(QueryArgument query, long page, long itemsPerPage);

        /// <summary>
        /// 获取列表数据。
        /// </summary>
        IEnumerable<T> SkipTake(QueryArgument query, long skip, long take);

        /// <summary>
        /// 获取列表数据，面向不支持分页的表格或下拉框。
        /// </summary>
        IEnumerable<T> Fetch(QueryArgument query);

        /// <summary>
        /// 获取一行数据，面向表单。
        /// </summary>
        T SingleOrDefault(QueryArgument query);

        /// <summary>
        /// 获取一行数据，面向表单。
        /// </summary>
        T SingleOrDefault(object id, bool includeRelation = true);
    }
}
